﻿using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;

namespace RuoVea.GoFastdfs.Dto
{
    /// <summary>
    /// GoFastDfs 配置文件对应实体
    /// </summary>
    public class GoFastDfsCfg
    {
        [JsonIgnore]
        private String addr;
        [JsonIgnore]
        private List<String> peers;
        [JsonProperty(propertyName: "enable_https")]
        private Boolean enableHttps;
        private String group;
        [JsonProperty(propertyName: "rename_file")]
        private Boolean renameFile;
        [JsonProperty(propertyName: "show_dir")]
        private Boolean showDir;
        private List<String> extensions;
        [JsonProperty(propertyName: "refresh_interval")]
        private String refreshInterval;
        [JsonProperty(propertyName: "enable_web_upload")]
        private Boolean enableWebUpload;
        [JsonProperty(propertyName: "download_domain")]
        private String downloadDomain;
        [JsonProperty(propertyName: "enable_custom_path")]
        private Boolean enableCustomPath;
        private List<String> scenes;
        [JsonProperty(propertyName: "alarm_receivers")]
        private List<String> alarmReceivers;
        [JsonProperty(propertyName: "default_scene")]
        private String defaultScene;
        private JObject mail;
        [JsonProperty(propertyName: "alarm_url")]
        private String alarmUrl;
        [JsonProperty(propertyName: "download_use_token")]
        private Boolean downloadUseToken;
        [JsonProperty(propertyName: "download_token_expire")]
        private long downloadTokenExpire;
        [JsonProperty(propertyName: "queue_size")]
        private long queueSize;
        [JsonProperty(propertyName: "auto_repair")]
        private Boolean autoRepair;
        private String host;
        [JsonProperty(propertyName: "file_sum_arithmetic")]
        private String fileSumArithmetic;
        [JsonProperty(propertyName: "peer_id")]
        private String peerId;
        [JsonProperty(propertyName: "support_group_manage")]
        private Boolean supportGroupManage;
        [JsonProperty(propertyName: "admin_ips")]
        private List<String> adminIps;
        [JsonProperty(propertyName: "enable_merge_small_file")]
        private Boolean enableMergeSmallFile;
        [JsonProperty(propertyName: "enable_migrate")]
        private Boolean enableMigrate;
        [JsonProperty(propertyName: "enable_distinct_file")]
        private Boolean enableDistinctFile;
        [JsonProperty(propertyName: "read_only")]
        private Boolean readOnly;
        [JsonProperty(propertyName: "enable_cross_origin")]
        private Boolean enableCrossOrigin;
        [JsonProperty(propertyName: "enable_google_auth")]
        private Boolean enableGoogleAuth;
        [JsonProperty(propertyName: "auth_url")]
        private String authUrl;
        [JsonProperty(propertyName: "enable_download_auth")]
        private Boolean enableDownloadAuth;
        [JsonProperty(propertyName: "default_download")]
        private Boolean defaultDownload;
        [JsonProperty(propertyName: "enable_tus")]
        private Boolean enableTus;
        [JsonProperty(propertyName: "sync_timeout")]
        private long syncTimeout;
        [JsonProperty(propertyName: "enable_fsnotify")]
        private Boolean enableFsnotify;
        [JsonProperty(propertyName: "enable_disk_cache")]
        private Boolean enableDiskCache;
        [JsonProperty(propertyName: "connect_timeout")]
        private Boolean connectTimeout;
        [JsonProperty(propertyName: "read_timeout")]
        private long readTimeout;
        [JsonProperty(propertyName: "write_timeout")]
        private long writeTimeout;
        [JsonProperty(propertyName: "idle_timeout")]
        private long idleTimeout;
        [JsonProperty(propertyName: "read_header_timeout")]
        private long readHeaderTimeout;
        [JsonProperty(propertyName: "sync_worker")]
        private long syncWorker;
        [JsonProperty(propertyName: "upload_worker")]
        private long uploadWorker;
        [JsonProperty(propertyName: "upload_queue_size")]
        private long uploadQueueSize;
        [JsonProperty(propertyName: "retry_count")]
        private long retryCount;
        [JsonProperty(propertyName: "sync_delay")]
        private long syncDelay;
        [JsonProperty(propertyName: "watch_chan_size")]
        private long watchChanSize;
    }
}
